package CONTABILIDAD_MODELO;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class CON_COMPROBANTE_DETALLE_REC {

    private Double ID;
    private String TIPO_CUENTA_CENTROCOSTO;
    private String GLOSA;
    private String GLOSA_DEBE;
    private String GLOSA_HABER;
    private Double ID_COMPROBANTE;
    private Double ID_CUENTA;
    private Double ID_CENTRO_COSTO;
    private Double CUENTA_DEBE;
    private Double CUENTA_HABER;
    private Conexion con = null;

    public CON_COMPROBANTE_DETALLE_REC() {
    }

    public CON_COMPROBANTE_DETALLE_REC(Double ID, String TIPO_CUENTA_CENTROCOSTO, String GLOSA, Double ID_COMPROBANTE, Double CUENTA_DEBE, Double CUENTA_HABER, String GLOSA_DEBE, String GLOSA_HABER) {
        this.ID = ID;
        this.TIPO_CUENTA_CENTROCOSTO = TIPO_CUENTA_CENTROCOSTO;
        this.GLOSA = GLOSA;
        this.ID_COMPROBANTE = ID_COMPROBANTE;
        this.CUENTA_DEBE = CUENTA_DEBE;
        this.CUENTA_HABER = CUENTA_HABER;
        this.GLOSA_DEBE = GLOSA_DEBE;
        this.GLOSA_HABER = GLOSA_HABER;
    }

    public boolean Insertar() {
        try 
        {
            String consulta = "";
            String cdebe ="null";
            if(CUENTA_DEBE!=0.0)
            {
                cdebe=CUENTA_DEBE+"";
            }
            String chaber ="null";
            if(CUENTA_HABER!=0.0)
            {
                chaber=CUENTA_HABER+"";
            }
            
            if (ID_CENTRO_COSTO == 0.0) {
                consulta = "insert into BROKER.CON_COMPROBANTE_DETALLE_REC(ID, TIPO_CUENTA_CENTROCOSTO, GLOSA, ID_COMPROBANTE, ID_CENTRO_COSTO, ID_CUENTA, CUENTA_DEBE, CUENTA_HABER, GLOSA_DEBE, GLOSA_HABER) VALUES (" + ID + ",'" + TIPO_CUENTA_CENTROCOSTO + "','" + GLOSA + "'," + ID_COMPROBANTE + ", null, " + ID_CUENTA + ", "+cdebe+", "+chaber+", '"+GLOSA_DEBE+"', '"+GLOSA_HABER+"')";
            } else {
                consulta = "insert into BROKER.CON_COMPROBANTE_DETALLE_REC(ID, TIPO_CUENTA_CENTROCOSTO, GLOSA, ID_COMPROBANTE, ID_CENTRO_COSTO, ID_CUENTA, CUENTA_DEBE, CUENTA_HABER, GLOSA_DEBE, GLOSA_HABER) VALUES (" + ID + ",'" + TIPO_CUENTA_CENTROCOSTO + "','" + GLOSA + "'," + ID_COMPROBANTE + ", " + ID_CENTRO_COSTO + ", " + ID_CUENTA + ", "+cdebe+", "+chaber+", '"+GLOSA_DEBE+"', '"+GLOSA_HABER+"')";
            }
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public boolean EliminarXid() {
        try {
            String consulta = "delete from BROKER.CON_COMPROBANTE_DETALLE_REC where ID= " + getID();
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public List<CON_COMPROBANTE_DETALLE_REC> Todos() {
        try {
            String consulta = "select * from BROKER.CON_COMPROBANTE_DETALLE_REC";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public List<CON_COMPROBANTE_DETALLE_REC> TodosxComprobanteInflacion(String clasificacion) {
        try {
            String consulta1 = "SELECT to_char(lpad(cc.CODIGO,1)) as num FROM BROKER.CON_CUENTA_CONTABLE cc WHERE (cc.DESCRIPCION = '"+clasificacion+"') AND CODIGO_NIVEL_CUENTA=1";
            ResultSet rss = con.EjecutarConsulta(consulta1);
            rss.next();
            String numero = rss.getString("num");            
            String consulta =   "SELECT CON_COMPROBANTE_DETALLE_REC.* FROM BROKER.CON_COMPROBANTE_DETALLE_REC, BROKER.CON_CUENTA_CONTABLE,BROKER.CON_MONEDA, BROKER.CON_AJUSTES WHERE(CON_COMPROBANTE_DETALLE_REC.ID_CUENTA =CON_CUENTA_CONTABLE.ID) AND (CON_CUENTA_CONTABLE.ID_MONEDA = CON_MONEDA.ID) AND (CON_CUENTA_CONTABLE.ID_AJUSTE = CON_AJUSTES.ID) AND (CON_CUENTA_CONTABLE.CODIGO LIKE '"+numero+"%') AND (CON_AJUSTES.DESCRIPCION = 'INFLACION') AND (CON_MONEDA.MONEDA_BASE = 2) ORDER BY CON_COMPROBANTE_DETALLE_REC.ID ASC";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public List<CON_COMPROBANTE_DETALLE_REC> TodosxComprobanteMonetario(String clasificacion) {
        try {
            String consulta1 = "SELECT to_char(lpad(cc.CODIGO,1)) as num FROM BROKER.CON_CUENTA_CONTABLE cc WHERE (cc.DESCRIPCION = '"+clasificacion+"') AND CODIGO_NIVEL_CUENTA=1";
            ResultSet rss = con.EjecutarConsulta(consulta1);
            rss.next();
            String numero = rss.getString("num");            
            String consulta =   "SELECT CON_COMPROBANTE_DETALLE_REC.* FROM BROKER.CON_COMPROBANTE_DETALLE_REC, BROKER.CON_CUENTA_CONTABLE,BROKER.CON_MONEDA, BROKER.CON_AJUSTES WHERE(CON_COMPROBANTE_DETALLE_REC.ID_CUENTA =CON_CUENTA_CONTABLE.ID) AND (CON_CUENTA_CONTABLE.ID_MONEDA = CON_MONEDA.ID) AND (CON_CUENTA_CONTABLE.ID_AJUSTE = CON_AJUSTES.ID) AND (CON_CUENTA_CONTABLE.CODIGO LIKE '"+numero+"%') AND (CON_AJUSTES.DESCRIPCION = 'TIPO CAMBIO') ORDER BY CON_COMPROBANTE_DETALLE_REC.ID ASC";            
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public List<CON_COMPROBANTE_DETALLE_REC> TodosxComprobanteNoMonetario() {
        try {
            
            String consulta =   "SELECT  CON_COMPROBANTE_DETALLE_REC.*\n" +
                                "FROM BROKER.CON_MONEDA,\n" +
                                "BROKER.CON_COMPROBANTE_DETALLE_REC,\n" +
                                "BROKER.CON_AJUSTES,\n" +
                                "BROKER.CON_CUENTA_CONTABLE\n" +
                                "WHERE (CON_CUENTA_CONTABLE.ID_MONEDA = CON_MONEDA.ID)\n" +
                                "AND (CON_COMPROBANTE_DETALLE_REC.ID_CUENTA = CON_CUENTA_CONTABLE.ID)\n" +
                                "AND (CON_CUENTA_CONTABLE.ID_AJUSTE = CON_AJUSTES.ID)\n" +
                                "AND (CON_AJUSTES.DESCRIPCION = 'INFLACION')\n" +
                                "AND (CON_MONEDA.MONEDA_BASE = 0)";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public boolean ELIMINARTodosxComprobante(double comprobante) throws SQLException {
        String consulta = "delete from BROKER.CON_COMPROBANTE_DETALLE_REC where ID_COMPROBANTE =" + comprobante;
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<CON_COMPROBANTE_DETALLE_REC> Cargar(ResultSet rs) {
        try {
            List<CON_COMPROBANTE_DETALLE_REC> lista = new ArrayList<CON_COMPROBANTE_DETALLE_REC>();
            while (rs.next()) {
                CON_COMPROBANTE_DETALLE_REC objeto = new CON_COMPROBANTE_DETALLE_REC();
                objeto.setID(rs.getDouble("ID"));
                objeto.setTIPO_CUENTA_CENTROCOSTO(rs.getString("TIPO_CUENTA_CENTROCOSTO"));
                objeto.setGLOSA(rs.getString("GLOSA"));
                objeto.setID_COMPROBANTE(rs.getDouble("ID_COMPROBANTE"));
                objeto.setID_CENTRO_COSTO(rs.getDouble("ID_CENTRO_COSTO"));
                objeto.setID_CUENTA(rs.getDouble("ID_CUENTA"));
                objeto.setCUENTA_DEBE(rs.getDouble("CUENTA_DEBE"));
                objeto.setCUENTA_HABER(rs.getDouble("CUENTA_HABER"));
                objeto.setGLOSA_DEBE(rs.getString("GLOSA_DEBE"));
                objeto.setGLOSA_HABER(rs.getString("GLOSA_HABER"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public Double getID() {
        return ID;
    }

    public void setID(Double ID) {
        this.ID = ID;
    }

    public String getTIPO_CUENTA_CENTROCOSTO() {
        return TIPO_CUENTA_CENTROCOSTO;
    }

    public void setTIPO_CUENTA_CENTROCOSTO(String TIPO_CUENTA_CENTROCOSTO) {
        this.TIPO_CUENTA_CENTROCOSTO = TIPO_CUENTA_CENTROCOSTO;
    }


    public String getGLOSA() {
        return GLOSA;
    }

    public void setGLOSA(String GLOSA) {
        this.GLOSA = GLOSA;
    }

    public Double getID_COMPROBANTE() {
        return ID_COMPROBANTE;
    }

    public void setID_COMPROBANTE(Double ID_COMPROBANTE) {
        this.ID_COMPROBANTE = ID_COMPROBANTE;
    }

    public Double getID_CUENTA() {
        return ID_CUENTA;
    }

    public void setID_CUENTA(Double ID_CUENTA) {
        this.ID_CUENTA = ID_CUENTA;
    }

    public Double getID_CENTRO_COSTO() {
        return ID_CENTRO_COSTO;
    }

    public void setID_CENTRO_COSTO(Double ID_CENTRO_COSTO) {
        this.ID_CENTRO_COSTO = ID_CENTRO_COSTO;
    }

    public Conexion getCon() {
        return con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }

    public Double getCUENTA_DEBE() {
        return CUENTA_DEBE;
    }

    public void setCUENTA_DEBE(Double CUENTA_DEBE) {
        this.CUENTA_DEBE = CUENTA_DEBE;
    }

    public Double getCUENTA_HABER() {
        return CUENTA_HABER;
    }

    public void setCUENTA_HABER(Double CUENTA_HABER) {
        this.CUENTA_HABER = CUENTA_HABER;
    }

    public String getGLOSA_DEBE() {
        return GLOSA_DEBE;
    }

    public void setGLOSA_DEBE(String GLOSA_DEBE) {
        this.GLOSA_DEBE = GLOSA_DEBE;
    }

    public String getGLOSA_HABER() {
        return GLOSA_HABER;
    }

    public void setGLOSA_HABER(String GLOSA_HABER) {
        this.GLOSA_HABER = GLOSA_HABER;
    }
    
    
}
